'''
拷贝  浅拷贝和深拷贝的区别
浅拷贝 copy() 复制了整个列表，但是没有拷贝子列表
      源列表的地址和复制后列表的地址不同，但是子列表的地址相同
深拷贝 deepcopy()拷贝了整个列表，同时拷贝子列表
      源列表的地址和复制后列表的地址不同，子列表的地址也不同
copy() 列表.copy()
deepcopy() copy.deepcopy()
'''

alist=[2,4,6,8,["tom","lily",3]]
#浅拷贝
blist = alist.copy()
alist[4].append("张三")
print(f"alist={alist}")
print(f"blist={blist}")

# 导入copy库 copy模块
clist=[2,4,6,8,["tom","lily",3]]

import copy
dlist = copy.deepcopy(clist)
clist[4].append("张三")
print(f"clist={clist}")
print(f"dlist={dlist}")

# 查
# 获取某个下标处的元素
print(clist[0])
# 获取列表的长度（个数）
print(len(clist))
# 获取元素对应的下标  6为元素值
index1 = clist.index(6)
print(index1)
# clist.index("6")
# 判断列表中是否含有某个元素
print("6" in clist)

'''
range(start,end,step)
切片：[start:end:step]
start:代表开始值 ，默认值为0
end：代表结束值，[start,end) 默认是列表长度
step：跨步，默认为1

[0:len(list):1]

1)目的：设定下标范围，获取对应的元素
2)切片支持所有的有序数据：列表 元组  字符串
3）可以使用切片删除del list[::]
'''
a= "helloworld"
print(a[2:5:1])

names=['a',"b","c","d","e","f","g","h","i"]
print(names[:3:1])
print(names[:3:])
print(names[::])
print(names[::-1])

# 获取下标2，4，6，8对应的元素
print(names[2:9:2])
del names[2:9:2]
print(names)

# 遍历列表 字符串 元组
for n in names:
    print(n+"----")

for n in names[::-1]:
    print(n+"****")

# 下标去遍历
for x in range(0,len(names)):
    print(names[x])

print("------------------")
for y in range(len(names)-1,-1,-1):
    print(names[y])

a = "hello"
for i in a:
    print(i)


# 对列表中的元素去重
list1 = [4,5,7,3,6,3,5,4]
list2 = []
# 遍历list1
for z in list1:
    # 判断list2中是否含有改元素
    if z not in list2:
        # 没有，添加
        list2.append(z)
list1 = list2
print(list1)

# 获取列表中的所有偶数下标元素
for w in range(0,len(list1),2):
    print(list1[w])


